The present invention relates to the field of transmitting information between devices.
More particularly, the present invention relates to the field of providing an interface to applications involved in the transmission of information between devices over a bus or network.
The IEEE standard, xe2x80x9c1394-1995 Standard For A High Performance Serial Bus,xe2x80x9d is an international standard for implementing an inexpensive high-speed serial bus architecture which supports both asynchronous and isochronous format data transfers. Isochronous data transfers are real-time transfers which take place such that the time intervals between significant instances have the same duration at both the transmitting and receiving applications. Each packet of data transferred isochronously is transferred in its own time period. The IEEE 1394-1995 standard bus architecture provides multiple channels for isochronous data transfer between applications. A six bit channel number is broadcast with the data to ensure reception by the appropriate application. This allows multiple applications to simultaneously transmit isochronous data across the bus structure. Asynchronous transfers are traditional data transfer operations which take place as soon as possible and transfer an amount of data from a source to a destination.
The IEEE 1394-1995 standard provides a high-speed serial bus for interconnecting digital devices thereby providing a universal I/O connection. The IEEE 1394-1995 standard defines a digital interface for the applications thereby eliminating the need for an application to convert digital data to analog data before it is transmitted across the bus. Correspondingly, a receiving application will receive digital data from the bus, not analog data, and will therefore not be required to convert analog data to digital data. The cable required by the IEEE 1394-1995 standard is very thin in size compared to other bulkier cables used to connect such devices. Devices can be added and removed from an IEEE 1394-1995 bus while the bus is active. If a device is so added or removed the bus will then automatically reconfigure itself for transmitting data between the then existing nodes. A node is considered a logical entity with a unique address on the bus structure. Each node provides an identification ROM, a standardized set of control registers and its own address space.
The IEEE 1394-1995 standard defines a protocol as illustrated in FIG. 1. This protocol includes a serial bus management block 10 coupled to a transaction layer 12, a link layer 14 and a physical layer 16. The physical layer 16 provides the electrical and mechanical connection between a device or application and the IEEE 1394-1995 cable. The physical layer 16 also provides arbitration to ensure that all devices coupled to the IEEE 1394-1995 bus have access to the bus as well as actual data transmission and reception. The link layer 14 provides data packet delivery service for both asynchronous and isochronous data packet transport. This supports both asynchronous data transport, using an acknowledgment protocol, and isochronous data transport, providing real-time guaranteed bandwidth protocol for just-in-time data delivery. The transaction layer 12 supports the commands necessary to complete asynchronous data transfers, including read, write and lock. The transaction layer 12 also provides a path for isochronous management data to be transferred to the serial bus management block 10 via read operations with isochronous control compare-swap registers. The serial bus management block 10 contains an isochronous resource manager for managing isochronous data transfers. The serial bus management block 10 also provides overall configuration control of the serial bus in the form of optimizing arbitration timing, guarantee of adequate electrical power for all devices on the bus, assignment of the cycle master, assignment of isochronous channel and bandwidth resources and basic notification of errors.
Data is transferred asynchronously between nodes on the IEEE 1394-1995 serial bus using read, write and lock transactions. Using a read transaction, data at a particular address within a responding node is transferred back to a requesting node. Using a write transaction, data is transferred from a requesting node to a particular address within one or more responding nodes. Using a lock transaction, data is transferred from a requesting node to a responding node, processed with data at a particular address within the responding node and the result is then transferred back to the requesting node.
At the transaction layer level, the read, write and lock transactions each consist of four basic service operations. A request is the basic service operation used by a requesting node to start the transaction. An indication is the basic service operation used to notify the responding node of an incoming request. A response is the basic service operation used by the responding node to return status and possibly data to the requesting node. A confirmation is the basic service operation used to notify the requesting node of the arrival of the corresponding response.
A data flow diagram showing the flow of data to complete a write transaction between two nodes coupled to the IEEE 1394-1995 serial bus is illustrated in FIG. 2. The transaction layer 20 and the link layer 22 of the node 28 requesting the write transaction and the transaction layer 26 and the link layer 24 of the node 30 responding to the write transaction are shown within FIG. 2. As illustrated in FIG. 2, the write request is sent to the transaction layer 20 of the requesting node 28 from the requesting application. The write request contains the destination address, the write data and the data length for the write operation. A link data request is then sent from the transaction layer 20 to the link layer 22 of the requesting node 28 to begin the transaction. The data to be written at the responding node 30 is then sent from the link layer 22 of the requesting or local node 28, in a data packet over the IEEE 1394-1995 serial bus, to the link layer 24 of the responding or remote node 30. A link data indication from the link layer 24 is sent to the transaction layer 26 of the responding node 30 when the link layer 24 receives the data packet from the link layer 22. Once the link data indication is received by the transaction layer 26 of the responding node 30, it then sends a write indication to the appropriate application, announcing the arrival of a write request.
Once the write operation has been completed at the responding node 30, the application to which the data was written sends a write response to the transaction layer 26 of the responding node 30. The response contains the node_ID of the source node, the transaction label of the corresponding request and the response code. After receiving the write response from the application, the transaction layer 26 then sends a response packet to the link layer 24 of the responding node 30. The link layer 24 of the responding node 30 then sends an acknowledge packet to the link layer 22 of the requesting node 28. The link layer 22 of the requesting node 28, after receiving the acknowledge packet from the link layer 24, then sends a confirmation to the transaction layer 20 of the requesting node 28. When the transaction layer 20 of the requesting node 28 receives this confirmation, it sends a write confirmation to the requesting application notifying it that the write operation has been completed.
A data flow diagram showing the flow of data to complete a write split transaction between two nodes coupled to the IEEE 1394-1995 serial bus is illustrated in FIG. 3. A split transaction is a transaction where the responding node 30 releases control of the bus after sending an acknowledge signal and then some time later arbitrates for the bus so that it can begin the response subaction. Other subactions may take place on the bus between the request and response subactions. Such a split transaction begins with an acknowledged request subaction which is followed at some subsequent time by an acknowledged response subaction. Read, write and lock transactions may all be split transactions.
In a write split transaction, as illustrated in FIG. 3, the write request is sent to the transaction layer 20 of the requesting node 28 from the requesting application, just as described above in reference to FIG. 2. A data packet request is then sent from the transaction layer 20 to the link layer 22 of the requesting node 28. The data to be written at the responding node 30 is then sent from the link layer 22 of the requesting node 28, in a data packet over the IEEE 1394-1995 serial bus, to the link layer 24 of the responding node 30.
When this data packet is received, an indication from the link layer 24 is sent to the transaction layer 26 of the responding node 30. Once the link data indication is received by the transaction layer 26 of the responding node 30, it then sends a write indication to the appropriate application, announcing the arrival of the write transaction.
Instead of sending a write response immediately, in a split transaction, the transaction layer 26 at the responding node 30 sends a response pending packet to the link layer 24 of the responding node 30, in order to acknowledge that the write request was received. The link layer 24 of the responding node 30 then sends an acknowledge packet to the link layer 22 of the requesting node 28, notifying the requesting node that the action is still pending. Once this acknowledge packet is received, the link layer 22 at the requesting node 28 sends a confirmation pending packet to the transaction layer of the requesting node 28. Control of the bus is then given up by the responding node 30 until the write operation is completed. During this time other subactions can take place on the bus.
Once the write operation has been completed at the responding node 30, the application to which the data was written sends a write response to the transaction layer 26 of the responding node 30. Because this is a split transaction, the transaction layer 26 then sends a no-data request packet to the link layer 24 of the responding node 30. In response to the receipt of this no-data request packet, the link layer 24 of the responding node 30 sends a no-data packet to the link layer 22 of the requesting node 28. After receiving the no-data packet, the link layer 22 of the requesting node 28 sends a no-data packet indication to the transaction layer 20 of the requesting node 28. The transaction layer 20 of the requesting node 28 then sends a write confirmation to the requesting application notifying it that the write operation has been completed. The transaction layer 20 of the requesting node also sends a response complete message to the link layer 22 of the requesting node 28. After this response complete message is received, the link layer 22 of the requesting node 28 sends an acknowledge complete message to the link layer 22 of the responding node 30. The link layer 24 of the responding node 30 then sends a confirmation complete message to the transaction layer 26 of the responding node 30 to notify it that the requesting node 28 received the confirmation of completion of the write operation.
As illustrated in FIGS. 2 and 3, the completion of transactions by an application through the transaction layer can be complicated and time consuming. An application involved in such a transaction, either as the requesting application or the responding application must generate requests and responses and receive indications and confirmations in order to complete the transactions. This interface between the application and the transaction layer is complicated. Each of the applications within a node must be able to communicate with the transaction layer in this manner, in order to complete data transactions over the IEEE 1394-1995 serial bus. While data may not flow in the same direction, completion of both read and lock transactions are similar to the illustrated write transaction and split write transaction of FIGS. 2 and 3.
A middle interface layer is positioned to provide a unified interface between applications resident within a node and the transaction layer of the node. The middle interface layer hides the details of the transaction layer from the applications. Unified response and request packets are used for communication between the applications and the middle interface layer. The middle interface layer is responsible for communicating with the transaction layer and generating and receiving all of the appropriate messages necessary for completion of transactions involving the applications.
A node configured to couple to a bus structure includes one or more applications, a transaction layer to control transactions between the applications and remote nodes coupled to the bus structure and a middle interface layer coupled to communicate with the applications and the transaction layer. The middle interface layer provides an interface to the applications for communications necessary to complete transactions involving the applications. The middle interface layer takes over all communications between the transaction layer and the applications to complete the transactions involving the applications. The middle interface layer communicates with the applications using a unified response message and a unified request message. The response and request messages are generated by both the middle interface layer and the applications. Preferably, the bus structure is an IEEE 1394-1995 bus structure. Alternatively, the bus structure is any appropriate bus structure.
A method of providing an interface to applications resident within a node on a bus structure comprises the steps of sending and receiving messages to and from the applications through a middle interface layer regarding transactions involving the applications taking place over the bus structure and generating and receiving communications at the middle interface layer necessary to complete the transactions. The communications generated at the interface layer are sent to a transaction layer within the node and communications received by the middle interface layer are received from the transaction layer. The messages sent to and received from the middle interface layer include a unified response message and a unified request message. The response and request messages are generated by both the middle interface layer and the applications.